Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>K (programming language)</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/K_(programming_language)"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-K_programming_language rootpage-K_programming_language skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">K (programming language)</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1251242444">
/* start https://en.wikipedia.org/ */


.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style>
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */


.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}


/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above" style="background-color:#e0e0e0;">K</th></tr><tr><th scope="row" class="infobox-label"><a href="Programming_paradigm" title="Programming paradigm">Paradigm</a></th><td class="infobox-data"><a href="Array_programming" title="Array programming">array</a>, <a href="Functional_programming" title="Functional programming">functional</a></td></tr><tr><th scope="row" class="infobox-label"><a href="Software_design" title="Software design">Designed&nbsp;by</a></th><td class="infobox-data"><a href="Arthur_Whitney_(computer_scientist)" title="Arthur Whitney (computer scientist)">Arthur Whitney </a></td></tr><tr><th scope="row" class="infobox-label"><a href="Software_developer" class="mw-redirect" title="Software developer">Developer</a></th><td class="infobox-data organiser">Kx Systems</td></tr><tr><th scope="row" class="infobox-label">First&nbsp;appeared</th><td class="infobox-data">1993<span style="display:none">&nbsp;(<span class="bday dtstart published updated">1993</span>)</span></td></tr><tr><th scope="row" class="infobox-label"><a href="Type_system" title="Type system">Typing discipline</a></th><td class="infobox-data"><a href="Type_system" title="Type system">dynamic</a>, <a href="Strong_and_weak_typing" title="Strong and weak typing">strong</a></td></tr><tr><th scope="row" class="infobox-label">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="http://kx.com">kx<wbr>.com</a></span></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #EEEEEE;">Influenced by</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="A%2B_(programming_language)" title="A+ (programming language)">A+</a>, <a href="APL_(programming_language)" title="APL (programming language)">APL</a>, <a href="Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a></td></tr><tr><th colspan="2" class="infobox-header" style="background-color: #EEEEEE;">Influenced</th></tr><tr><td colspan="2" class="infobox-full-data"><a href="Q_(programming_language_from_Kx_Systems)" title="Q (programming language from Kx Systems)">Q</a>, <a rel="nofollow" class="external text" href="https://shakti.com/">Shakti</a></td></tr></tbody></table>
<p><b>K</b> is a proprietary <a href="Array_data_structure" class="mw-redirect" title="Array data structure">array</a> processing programming language developed by <a href="Arthur_Whitney_(computer_scientist)" title="Arthur Whitney (computer scientist)">Arthur Whitney</a> and commercialized by <a href="Kx_Systems" class="mw-redirect" title="Kx Systems">Kx Systems</a>. The language serves as the foundation for <a href="Kdb%2B" title="Kdb+">kdb+</a>, an in-memory, column-based <a href="Database" title="Database">database</a>, and other related financial products.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> The language, originally developed in 1993, is a variant of <a href="APL_(programming_language)" title="APL (programming language)">APL</a> and contains elements of <a href="Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a>. Advocates of the language emphasize its speed, facility in handling arrays, and expressive syntax.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p>Before developing K, Arthur Whitney had worked extensively with APL, first at <a href="I._P._Sharp_Associates" title="I. P. Sharp Associates">I. P. Sharp Associates</a> alongside <a href="Kenneth_E._Iverson" title="Kenneth E. Iverson">Ken Iverson</a> and <a href="Roger_Hui" title="Roger Hui">Roger Hui</a>, and later at <a href="Morgan_Stanley" title="Morgan Stanley">Morgan Stanley</a> developing financial applications. At Morgan Stanley, Whitney helped to develop <a href="A%2B_(programming_language)" title="A+ (programming language)">A+</a>, a variant of APL, to facilitate migrating APL applications from <a href="IBM" title="IBM">IBM</a> <a href="Mainframe_computer" title="Mainframe computer">mainframe computers</a> to a network of Sun <a href="Workstation" title="Workstation">workstations</a>. A+ had a smaller set of primitive functions and was designed for speed and to handle large sets of time series data.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p><p>In 1993, Whitney left Morgan Stanley and developed the first version of the K language. At the same time he formed Kx Systems to commercialize the product and signed an exclusive contract with <a href="Union_Bank_of_Switzerland" title="Union Bank of Switzerland">Union Bank of Switzerland</a> (UBS). For the next four years he developed various financial and trading applications using K for UBS.
</p><p>The contract ended in 1997 when UBS merged with <a href="Swiss_Bank_Corporation" title="Swiss Bank Corporation">Swiss Bank</a>. In 1998, Kx Systems released kdb+, a database built on K. kdb was an <a href="In-memory_database" title="In-memory database">in-memory</a>, <a href="Column-oriented_DBMS" class="mw-redirect" title="Column-oriented DBMS">column-oriented</a> database and included ksql, a query language with an <a href="SQL" title="SQL">SQL</a>-like syntax. Since then, several financial products have been developed with K and kdb+. kdb+/tick and kdb+/taq were developed in 2001. kdb+, a 64-bit version of kdb+ was released in 2003 and kdb+/tick and kdb+/taq were released in 2004. kdb+ included <a href="Q_(programming_language_from_Kx_Systems)" title="Q (programming language from Kx Systems)">Q</a>, a language that merged the functions of the underlying K language and ksql.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p><p>Whitney released a derivative of K called Shakti in 2018.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Overview">Overview</h2></div>
<p>K shares key features with <a href="APL_(programming_language)" title="APL (programming language)">APL</a>. They are both <a href="Interpreted_language" class="mw-redirect" title="Interpreted language">interpreted</a>, <a href="Interactivity" title="Interactivity">interactive</a> languages noted for concise and expressive syntax. They have simple rules of precedence based on right to left evaluation. The languages contain a rich set of primitive functions designed for processing arrays. These primitive functions include mathematical operations that work on arrays as whole data objects, and array operations, such as sorting or reversing the order of an array. In addition, the language contains special operators that combine with primitive functions to perform types of iteration and recursion. As a result, complex and extended transformations of a dataset can be expressed as a chain of sub-expressions, with each link performing a segment of the calculation and passing the results to the next link in the chain.
</p><p>Like APL, the primitive functions and operators are represented by single or double characters; however, unlike APL, K restricts itself to the <a href="ASCII_character_set" class="mw-redirect" title="ASCII character set">ASCII character set</a> (as does another APL variant, <a href="J_(programming_language)" title="J (programming language)">J</a>). To allow for this, the set of primitive functions for K is smaller and heavily <a href="Function_overloading" title="Function overloading">overloaded</a>, with each of the ASCII symbols representing two or more distinct functions or operations. In a given expression, the actual function referenced is determined by the context. As a result, K expressions can be opaque and difficult to parse for humans. For example, in the following contrived expression the <a href="Exclamation_point" class="mw-redirect" title="Exclamation point">exclamation point</a> <code>!</code> refers to three distinct functions:
</p>
<pre>2!!7!4</pre>
<p>Reading from right to left the first <code>!</code> is modulo division that is performed on 7 and 4 resulting in 3. The next <code>!</code> is enumeration and lists the integers less than 3, resulting in the list 0 1 2. The final <code>!</code> is rotation where the list on the right is rotated two times to the left producing the final result of 2 0 1.
</p><p>The second core distinction of K is that functions are <a href="First-class_object" class="mw-redirect" title="First-class object">first-class objects</a>, a concept borrowed from <a href="Scheme_(programming_language)" title="Scheme (programming language)">Scheme</a>. <a href="First-class_function" title="First-class function">First-class functions</a> can be used in the same contexts where a data value can be used. Functions can be specified as anonymous expressions and used directly with other expressions. Function expressions are specified in K using <a href="Curly_bracket" class="mw-redirect" title="Curly bracket">curly brackets</a>. For example, in the following expression a quadratic expression is defined as a function and applied to the values 0 1 2 and 3:
</p>
<div class="mw-highlight mw-highlight-lang-k mw-content-ltr" dir="ltr"><pre><span class="p">{(</span><span class="il">3</span><span class="o">*</span><span class="n">x</span><span class="o">^</span><span class="il">2</span><span class="p">)</span><span class="o">+</span><span class="p">(</span><span class="il">2</span><span class="o">*</span><span class="n">x</span><span class="p">)</span><span class="o">+</span><span class="il">1</span><span class="p">}</span><span class="o">'!</span><span class="il">4</span>
</pre></div>
<p>In K, named functions are simply function expressions stored to a variable in the same way any data value is stored to a variable.
</p>
<div class="mw-highlight mw-highlight-lang-k mw-content-ltr" dir="ltr"><pre><span class="nv">a</span><span class="o">:</span><span class="il">25</span>
<span class="nf">f</span><span class="o">:</span><span class="p">{(</span><span class="n">x</span><span class="o">^</span><span class="il">2</span><span class="p">)</span><span class="o">-</span><span class="il">1</span><span class="p">}</span>
</pre></div>
<p>Functions can be passed as an argument to another function or returned as a result from a function.
</p>
<div class="mw-heading mw-heading2"><h2 id="Examples">Examples</h2></div>
<p>K is an interpreted language where every statement is evaluated and its results displayed immediately. Literal expressions such as strings evaluate to themselves. Consequently, the <a href="%22Hello%2C_World!%22_program" title="&quot;Hello, World!&quot; program">Hello world</a>-program is trivial:
</p>
<pre>"Hello world!"
</pre>
<p>The following expression sorts a list of strings by their lengths:
</p>
<div class="mw-highlight mw-highlight-lang-k mw-content-ltr" dir="ltr"><pre><span class="n">x</span><span class="o">@&gt;#:'</span><span class="n">x</span>
</pre></div>
<p>The expression is evaluated from right to left as follows:
</p>
<ol><li>#:'x returns the length of each word in the list x.</li>
<li>&gt; returns the indices that would sort a list of values in descending order.</li>
<li>@ uses the integer values on the right to index into the original list of strings.</li></ol>
<p>A function to determine if a number is prime can be written as:
</p>
<div class="mw-highlight mw-highlight-lang-k mw-content-ltr" dir="ltr"><pre><span class="p">{</span><span class="o">&amp;/</span><span class="n">x</span><span class="o">!/:</span><span class="il">2</span><span class="o">_!</span><span class="n">x</span><span class="p">}</span>
</pre></div>
<p>The function is evaluated from right to left:
</p>
<ol><li>!x enumerate the positive integers less than x.</li>
<li>2_ drops the first two elements of the enumeration (0 and 1).</li>
<li>x!/: performs modulo division between the original integer and each value in the truncated list.</li>
<li>&amp;/ find the minimum value of the list of modulo result.</li></ol>
<p>If x is not prime then one of the values returned by the modulo operation will be 0 and consequently the minimal value of the list. If x is prime then the minimal value will be 1, because x mod 2 is 1 for any prime greater than 2.
</p><p>The function below can be used to list all of the prime numbers between 1 and R with:
</p>
<div class="mw-highlight mw-highlight-lang-k mw-content-ltr" dir="ltr"><pre><span class="il">2</span><span class="o">_&amp;</span><span class="p">{</span><span class="o">&amp;/</span><span class="n">x</span><span class="o">!/:</span><span class="il">2</span><span class="o">_!</span><span class="n">x</span><span class="p">}</span><span class="o">'!</span><span class="n">R</span>
</pre></div>
<p>The expression is evaluated from right to left
</p>
<ol><li>!R enumerate the integers less than R.</li>
<li>' apply each value of the enumeration to the prime number function on the left. This will return a list of 0's and 1's.</li>
<li>&amp; return the indices of the list where the value is 1.</li>
<li>2_ drop the first two elements of the enumeration (0 and 1)</li></ol>
<div class="mw-heading mw-heading2"><h2 id="K_financial_products">K financial products</h2></div>
<p>K is the foundation for a family of financial products. Kdb+ is an in-memory, column-based database with much of the same functions of a <a href="Relational_database_management_system" class="mw-redirect" title="Relational database management system">relational database management system</a>. The database supports <a href="SQL" title="SQL">SQL</a>, <a href="SQL-92" title="SQL-92">SQL-92</a> and ksql, a query language with a syntax similar to SQL and designed for column based queries and array analysis.
</p><p>Kdb+ is available for several <a href="Operating_system" title="Operating system">operating systems</a>, including <a href="Solaris_(operating_system)" class="mw-redirect" title="Solaris (operating system)">Solaris</a>, <a href="Linux" title="Linux">Linux</a>, <a href="MacOS" title="MacOS">macOS</a>, and <a href="Microsoft_Windows" title="Microsoft Windows">Windows</a> (32-bit or 64-bit).
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="J_(programming_language)" title="J (programming language)">J</a>, another APL-inspired language</li>
<li><a href="Q_(programming_language_from_Kx_Systems)" title="Q (programming language from Kx Systems)">Q</a>, the language of kdb+ and a new merged version of K and ksql.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://kx.com/">"Kx Systems"</a>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite id="CITEREFIverson" class="citation web cs1">Iverson, Kenneth. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20130920071911/http://www.jsoftware.com/papers/tot.htm">"Notation as a Tool of Thought"</a>. Archived from <a rel="nofollow" class="external text" href="http://www.jsoftware.com/papers/tot.htm">the original</a> on 2013-09-20<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-02-23</span></span>.</cite></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://queue.acm.org/detail.cfm?id=1531242">"arthur bio and interview"</a>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFGarland2004" class="citation cs2">Garland, Simon (December 28, 2004), <a rel="nofollow" class="external text" href="https://web.archive.org/web/20070101213150/http://vector.org.uk/weblog/archive/000036.html"><i>Q Language Widening the Appeal of Vectors</i></a>, Vector UK, archived from <a rel="nofollow" class="external text" href="http://vector.org.uk/weblog/archive/000036.html">the original</a> on January 1, 2007</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://shakti.com/history/">"Shakti"</a>.</cite></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="https://kx.com">Official website</a></span></span>, Kx Systems</li>
<li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="https://kx.com/solutions/">Official website</a></span></span>, kdb+</li>
<li><a rel="nofollow" class="external text" href="http://www.math.bas.bg/bantchev/place/k.html">Overview of K (with a link to K reference card)</a></li>
<li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20230521013222/https://cs.nyu.edu/courses/fall07/G22.2965-001/kintro.html">Dennis Shasha - K as a Prototyping Language</a></li>
<li><a rel="nofollow" class="external text" href="http://archive.vector.org.uk/art10010830">K by Arthur Whitney (2005)</a></li>
<li><a rel="nofollow" class="external text" href="https://johnearnest.github.io/ok/index.html">oK</a> <a href="REPL" class="mw-redirect" title="REPL">REPL</a> for a K clone</li>
<li><a rel="nofollow" class="external text" href="https://github.com/kevinlawler/kona/wiki"><i>Kona</i></a> an open-source K3 implementation</li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */


.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}


/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="APL_programming493" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="3"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */


.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}


/* end https://en.wikipedia.org/ */
</style><div id="APL_programming493" style="font-size:114%;margin:0 4em"><a href="APL_(programming_language)" title="APL (programming language)">APL programming</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Features</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="APL_syntax_and_symbols" title="APL syntax and symbols">APL syntax and symbols</a></li>
<li><a href="Direct_function" title="Direct function">Direct function</a> (dfn)</li>
<li><a href="Digital_encoding_of_APL_symbols" title="Digital encoding of APL symbols">Code pages</a></li>
<li><a href="Iverson_bracket" title="Iverson bracket">Iverson bracket</a></li>
<li><a href="Rank_(J_programming_language)" title="Rank (J programming language)">Rank</a></li>
<li><a href="Shared_Variables" title="Shared Variables">Shared Variables</a></li></ul>
</div></td><td class="noviewer navbox-image" rowspan="3" style="width:1px;padding:0 0 0 2px"><div><span typeof="mw:File"></span></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Programming_language_implementation" title="Programming language implementation">Implementations</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Major</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li>Dyalog APL</li>
<li>APL2 → <i>APLX</i></li>
<li><i>SHARP APL</i></li>
<li><i>NARS</i> → NARS2000°</li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Dialect_(computing)" class="mw-redirect" title="Dialect (computing)">Dialects</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="A%2B_(programming_language)" title="A+ (programming language)"><i>A</i> → <i>A+</i></a>°</li>
<li>APLNext → <i>VisualAPL</i></li>
<li><i><a href="ELI_(programming_language)" title="ELI (programming language)">ELI</a></i></li>
<li><i>GNU APL</i>°</li>
<li><a href="J_(programming_language)" title="J (programming language)">J</a>°</li>
<li><a href="Kdb%2B" title="Kdb+">kdb+</a>
<ul><li>, <a href="Q_(programming_language_from_Kx_Systems)" title="Q (programming language from Kx Systems)">Q</a></li></ul></li>
<li><i><a href="Polymorphic_Programming_Language" title="Polymorphic Programming Language">Polymorphic Programming Language</a></i> (PPL)</li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Community_of_practice" title="Community of practice">Community</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Professional_association" title="Professional association">Professional<br>associations</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Association_for_Computing_Machinery" title="Association for Computing Machinery">Association for Computing Machinery</a>: SIGAPL</li>
<li>British APL Association</li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Organizations</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Business</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Ampere_WS-1" title="Ampere WS-1">Ampere</a></li>
<li>Analogic Corporation</li>
<li>APL2000</li>
<li><a href="CompuServe" title="CompuServe">CompuServe</a></li>
<li><a href="Digital_Equipment_Corporation" title="Digital Equipment Corporation">Digital Equipment Corporation</a> (DEC)</li>
<li>DNA Systems</li>
<li>Dyalog Ltd.</li>
<li><a href="IBM" title="IBM">IBM</a></li>
<li><a href="I._P._Sharp_Associates" title="I. P. Sharp Associates">I. P. Sharp Associates</a></li>
<li><a href="Kx_Systems" class="mw-redirect" title="Kx Systems">Kx Systems</a></li>
<li><a href="MCM/70" title="MCM/70">Micro Computer Machines</a> (MCM)</li>
<li><a href="Science_Research_Associates" title="Science Research Associates">Science Research Associates</a></li>
<li><a href="Scientific_Time_Sharing_Corporation" title="Scientific Time Sharing Corporation">Scientific Time Sharing Corporation</a> (STSC)</li>
<li><a href="Soliton_Incorporated" title="Soliton Incorporated">Soliton Incorporated</a></li>
<li>Telecompute Integrated Systems, Inc.</li>
<li>Time Sharing Resources (TSR)</li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Education</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Carnegie_Mellon_University" title="Carnegie Mellon University">Carnegie Mellon University</a> (CMU)</li>
<li><a href="University_of_Maryland%2C_College_Park" title="University of Maryland, College Park">University of Maryland</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">People</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Philip_S._Abrams" title="Philip S. Abrams">Phil Abrams</a></li>
<li><a href="Robert_Bernecky" title="Robert Bernecky">Bob Bernecky</a></li>
<li><a href="Lawrence_M._Breed" title="Lawrence M. Breed">Larry Breed</a></li>
<li><a href="Charles_Brenner_(mathematician)" title="Charles Brenner (mathematician)">Charles Brenner</a></li>
<li><a href="Fred_Brooks" title="Fred Brooks">Fred Brooks</a></li>
<li><a href="Jim_Brown_(computer_scientist)" title="Jim Brown (computer scientist)">Jim Brown</a></li>
<li><a href="Adin_Falkoff" title="Adin Falkoff">Adin Falkoff</a></li>
<li>Patrick E. Hagerty</li>
<li>Herbert Hellerman</li>
<li><a href="Roger_Hui" title="Roger Hui">Roger Hui</a></li>
<li><a href="Kenneth_E._Iverson" title="Kenneth E. Iverson">Kenneth E. Iverson</a></li>
<li><a href="Richard_H._Lathwell" title="Richard H. Lathwell">Dick Lathwell</a></li>
<li><a href="Eugene_McDonnell" title="Eugene McDonnell">Eugene McDonnell</a></li>
<li>Robert Metzger</li>
<li><a href="Roger_Moore_(computer_scientist)" title="Roger Moore (computer scientist)">Roger Moore</a></li>
<li><a href="Alan_Perlis" title="Alan Perlis">Alan Perlis</a></li>
<li><a href="John_M._Scholes" title="John M. Scholes">John Scholes</a></li>
<li>J. Henri Schueler</li>
<li>Bob Smith</li>
<li><a href="Edward_H._Sussenguth" title="Edward H. Sussenguth">Edward H. Sussenguth</a> Jr.</li>
<li><a href="Arthur_Whitney_(computer_scientist)" title="Arthur Whitney (computer scientist)">Arthur Whitney</a></li>
<li>William Yerazunis</li>
<li><a href="Rodnay_Zaks" title="Rodnay Zaks">Rodnay Zaks</a></li></ul>
</div></td></tr><tr><td colspan="2" class="navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Iverson_Award" title="Iverson Award">Iverson Award</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><td class="navbox-abovebelow" colspan="3"><div>
<ul><li><i>Italics</i> <b>= discontinued</b></li>
<li><b>° = <a href="Open-source_software" title="Open-source software">Open-source software</a></b><br><span class="noviewer" typeof="mw:File"><span title="Commons page"></span></span> <b><a href="https://commons.wikimedia.org/wiki/Category:APL_(programming_language)" class="extiw external" title="commons:Category:APL (programming language)">Commons</a></b> <span class="noviewer" typeof="mw:File"><span title="Category"></span></span> <b>Category</b></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-02-13" href="https://en.wikipedia.org/wiki/?title=K_(programming_language)&amp;oldid=1275496627">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>